package primaryAlgorithm.ispalidrome;
/**
 * @Date 2020/03/18
 * @author 王光浩
 * @Thinking 使用双指针，一个在首一个在尾。
 * @Analysis 时间复杂O（n），空间复杂度O（n）——n是s中元素的个数
 */
public class MyMethodOne {
	 public boolean isPalindrome(String s) {
		 int first=0;
		 int last=s.length()-1;
		 s=s.toLowerCase();
		 while(first<last) {
			 if(isLetter(s.charAt(first)) && isLetter(s.charAt(last)) ) {
				 if(s.charAt(first++)-s.charAt(last++)!=0)return false;
			 }
			 else if(isLetter(s.charAt(first)))
				 last--;
			 else if(isLetter(s.charAt(last)))
				 first++;
			 else {
				 last--;
				 first++;
			 }
		 }
		 return true;
	 }
	 /*
	  * 判断是否是letter or digit	
	  */
	 private boolean isLetter(char ch) {
		 return (ch>=97 && ch<=122) || (ch<=57 && ch>=48);
	 }
}
